#include "log.h"
#include "tcp/tcp.h"
#include <unistd.h>
#include <stdlib.h>

int main(int argc, char *argv[]){

    if(argc < 2){
	log("%s <puerto>\n", argv[0]);
	exit(-1);
    }

    int puerto = atoi(argv[1]);
    if(puerto <= 0){
	log("El puerto no puede ser %d\n", puerto);
	exit(-1);
    }

    int sockfd = tcpoppas(puerto);
    if(sockfd <= 0){
	perror("no se pudo abrir el socket");
	exit(-2);
    }

    int aceptado=0;
    long id_conexion=1;
    while((aceptado = aceptar(sockfd)) > 0){
	log("Nuevo cliente aceptado.\n");
	if(fork() == 0){
	    close(sockfd);
	    char socket[20];
	    sprintf(socket, "%d", aceptado);
	    char conexion[20];
	    sprintf(conexion, "%ld", id_conexion);

	    if(fork() == 0){
		execlp("./receptor", "./receptor", socket, conexion, NULL);
		perror("Error en el exec del receptor.\n");
		exit(-1);
	    }
	    execlp("./emisor", "./emisor", socket, conexion, NULL);
	    perror("Error en el exec del emisor.\n");
	    exit(-1);

	}
	id_conexion++;
	close(aceptado);
    }

    return 0;
}
